import { defineStore } from 'pinia';

export const useUserStore = defineStore('user', {
    state: () => ({
        token: localStorage.getItem('token') || ''
    }),
    actions: {
        // 增：设置 token
        setToken(newToken) {
            this.token = newToken;
            localStorage.setItem('token', newToken);
        },
        // 删：清除 token
        clearToken() {
            this.token = '';
            localStorage.removeItem('token');
        },
        // 改：更新 token，接收外部传入的新 token
        updateToken(newToken) {
            try {
                if (newToken) {
                    this.setToken(newToken);
                    return newToken;
                } else {
                    throw new Error('传入的新 token 为空');
                }
            } catch (error) {
                console.error('Token 更新失败:', error);
                this.clearToken();
                return null;
            }
        },
        // 查：验证 token
        validateToken() {
            const isValid = this.token.length > 0;
            if (!isValid) {
                this.clearToken();
            }
            return isValid;
        }
    },
    getters: {
        // 查：获取 token
        getToken: (state) => state.token,
        // 查：判断是否有 token
        hasToken: (state) => state.token !== ''
    }
});
    